//硬件:定时器
#ifndef DASYS_HARDWARE_TIMER_H
#define DASYS_HARDWARE_TIMER_H

#include "Common/TypeDef.h"
#include "Hardware/IO.h"
#include <intrins.h>

//初始化计时器0
//参数 workMode : 工作模式 0 --- 16位定时器
//				  工作模式 1 --- 8位自动重装定时器
//参数 high     : TH 装载的值,范围0-255
//参数 low      : TL 装载的值,范围0-255
void Timer0Init(uint8 workMode,uint8 high,uint8 low);
void Timer1Init(uint8 workMode,uint8 high,uint8 low);
//清除计时器0
void ClearTimer0();
//清除计时器1
void ClearTimer1();
//阻塞延迟
//参数ms : 表示要延迟的毫秒数
void Delay(uint16 ms);
//阻塞延迟5微秒
void Delay5us();
//阻塞延迟1微妙
#define Delay1us() _nop_()

//阻塞延迟30微妙,1-wire总线用
void Delay30us();
//阻塞延迟60微秒,1-wire总线用
void Delay60us();
//阻塞延迟550微秒,1-wire总线用
void Delay550us();

//使用计时器0开始计时
void StartCountTime();
//返回经过的微秒(us)
//参数 TH0 : 传递出的TH0
//参数 TL0 : 传递出的TL0
//返回值   : 是有在超时内,true表示未超时,false表示已超时,则TH0与TL0结果无效
//计算方式 : 微秒(us)= TH0*256+TL0;
bool EndCountTime(uint8 *_TH0,uint8 *_TL0);
#endif